Ako ziskat cislo verzie
Otázka od: Köteleš Ján
29. 11. 2002 14:42
Pekny den
Vo vlastnostiach projektu sa da definovat stvorcislie oznacujuce verziu
(major, minor, release, build). Neviete prosim niekto ako vytiahnut tieto
cisla v samotnom programe. Napriklad aby som sa nemusel starat o
aktualizáciu tohoto údaja v dialogu about...
Odpovedá: Petr Vones
29. 11. 2002 14:52
From: "Köteleš Ján" <Koteles@lumen.sk>
> Vo vlastnostiach projektu sa da definovat stvorcislie oznacujuce verziu
> (major, minor, release, build). Neviete prosim niekto ako vytiahnut tieto
> cisla v samotnom programe. Napriklad aby som sa nemusel starat
> o aktualizáciu tohoto údaja v dialogu about...
Pomoci funkce VersionFixedFileInfo nebo tridy TJclFileVersionInfo v JCL:
http://sourceforge.net/project/showfiles.php?group_id=47514&release_id=118195
Petr Vones
Odpovedá: campulka
29. 11. 2002 14:51
Na http://www.campulka.net/?dir=Delphi%20komponenty
si stahni komponentu TVerInfo.
> -----Original Message-----
> Pekny den
>
> Vo vlastnostiach projektu sa da definovat stvorcislie
> oznacujuce verziu
> (major, minor, release, build). Neviete prosim niekto ako
> vytiahnut tieto
> cisla v samotnom programe. Napriklad aby som sa nemusel starat o
> aktualizáciu tohoto údaja v dialogu about...
Odpovedá: Stanislav Kochan
29. 11. 2002 16:02
>Pekny den
>
>Vo vlastnostiach projektu sa da definovat stvorcislie oznacujuce verziu
>(major, minor, release, build). Neviete prosim niekto ako vytiahnut tieto
>cisla v samotnom programe. Napriklad aby som sa nemusel starat o
>aktualizáciu tohoto údaja v dialogu about...
Ja s uspechom pouzivam toto :
{GetProjectVersion ***************************************************
funkcia vrati aktualnu verziu softwaru
pr.:Label.caption := GetProjectVersion(application); }
function GetProjectVersion(SendApplication: TApplication):string;
var FileName,tmp: string;
InfoSize, Wnd: Longword;
VerBuf: Pointer;
FI: PVSFixedFileInfo;
VerSize: Longword;
v1,v2:integer;
begin
FileName := ExtractFileName(SendApplication.ExeName);
InfoSize := GetFileVersionInfoSize(PChar(FileName), Wnd);
if InfoSize <> 0 then
begin
GetMem(VerBuf, InfoSize);
try
if GetFileVersionInfo(PChar(FileName), Wnd, InfoSize, VerBuf)
then begin
if VerQueryValue(VerBuf, '\', Pointer(FI), VerSize) then
begin
v1:=FI.dwFileVersionMS;
v2:=FI.dwFileVersionLS;
tmp:= inttostr(v1 shr 16) + '.' +inttostr(v1 and
$0000FFFF)+'.'+
inttostr(v2 shr 16) + ' (build ' +inttostr(v2
and $0000FFFF)+')';
end;
end;
finally
FreeMem(VerBuf);
end;
end;
result := tmp;
end;
Odpovedá: Jiri Novotny
29. 11. 2002 16:10
> Vo vlastnostiach projektu sa da definovat stvorcislie oznacujuce verziu
> (major, minor, release, build). Neviete prosim niekto ako vytiahnut tieto
> cisla v samotnom programe. Napriklad aby som sa nemusel starat o
> aktualizáciu tohoto údaja v dialogu about...
Ja kdesi pouzivam toto:
procedure TAboutForm.FormShow(Sender: TObject);
var VersionSize, VersionHandle : DWord;
pVersionInfo : pointer;
FixedFileInfo : PVSFixedFileInfo;
ItemLen : UInt;
begin
VersionSize:=GetFileVersionInfoSize(PChar(Application.ExeName),
VersionHandle);
if VersionSize>0 then begin
GetMem(pVersionInfo,VersionSize);
try
if GetFileVersionInfo(PChar(Application.ExeName),VersionHandle,
VersionSize, pVersionInfo) then
if VerQueryValue(pVersionInfo, '\',
Pointer(FixedFileInfo),ItemLen) then
with FixedFileInfo^ do
Label2.Caption := Label2.Caption + ' ' +
Format('%d.%d.%d.%d',[HiWord(dwFileVersio
nMS),
LoWord(dwFileVersionMS),HiWord(dwFileVers
ionLS), LoWord(dwFileVersionLS)]);
finally
FreeMem(pVersionInfo,VersionSize);
end;
end;
end;
Jirka.